home *** CD-ROM | disk | FTP | other *** search
- // Persistence Of Vision Raytracer version 2.0 sample file.
-
- // Include file for DRUMS.POV by Dan Farmer
-
- #declare Brass = colour red 0.88 green 0.84 blue 0.10
- #declare ChromeBlue = colour red 0.84 green 0.89 blue 1.00
-
- #declare BrassFinish = finish {
- reflection 0.15
- brilliance 10.0
- metallic
- phong 0.75
- phong_size 50
- }
-
- #declare Chrome = finish { Mirror }
-
- #declare VeryShiny = finish {
- ambient 0.05 diffuse 0.75
- phong 1.0
- phong_size 100.0
- brilliance 5
- reflection 0.5
- }
-
- // The old Disk_X definition
- #declare Disk_X = cylinder { <0, 0, 0>, <1, 0, 0>, 1 }
-
- #declare X_Tube = difference {
- cylinder { -x, x, 1.0 }
- cylinder { -1.1*x, 1.1*x, 0.97 }
- }
-
- #declare Cymbal = union { /* Overall radius of 6 units */
- sphere { /* Dome */
- <0, 0, 0>, 1
- scale <2.0, 0.75, 2.0>
- translate 1*y
- }
- sphere {
- <0, 0, 0>, 1
- scale <6.0, 1.0, 6.0>
- }
-
- finish { BrassFinish }
- pigment { Brass }
-
- clipped_by { plane { y, 0.25 inverse } }
- bounded_by { sphere { <0, 0, 0>, 6.0 } }
- }
-
- #declare Tensioner1 = union {
- object {
- Disk_X
- translate -0.5*x
- scale <0.5, 0.04, 0.02>
- }
-
- intersection {
- sphere { <0, 0, 0>, 1 scale <0.25, 0.1, 0.06> }
- plane { x, 0 }
- bounded_by { sphere { <0, 0, 0>, 0.25 } }
- }
-
- bounded_by { sphere { <0, 0, 0>, 0.6 } }
- }
-
- #declare Tensioner = union {
- object { Tensioner1 translate 0.5*x }
- object { Tensioner1 rotate 180*z translate -0.5*x }
-
- translate 1.03*z /* Position for rotation around drum cylinder */
-
- finish { Chrome }
- pigment { ChromeBlue }
- }
-
-
- #declare Drum = union {
- sphere { /* Top (and rear) Drumhead */
- <0, 0, 0>, 1
- scale <0.001, 1.0, 1.0>
- translate 0.75*x
-
- finish {
- ambient 0.1
- diffuse 0.7
- specular 0.2
- roughness 0.01
- }
- pigment { White }
- }
-
- object { /* Chrome edge band #1 */
- X_Tube
- scale <0.05, 1.025, 1.0>
- translate -0.8*x
-
- texture {
- finish { Chrome }
- pigment { ChromeBlue }
- }
- }
-
- intersection { /* Drum body */
- cylinder {
- -1.1*x, 1.1*x, 1.0
-
- finish { VeryShiny }
- pigment { White }
- }
-
- cylinder {
- -1.1*x, 1.1*x, 0.97 /* Inside of the drum cylinder */
- inverse
-
- pigment { Tan }
- finish {
- ambient 0.05
- diffuse 0.5
- }
- }
-
- box { <-1, -1, -1>, <1, 1, 1>
- finish { Chrome }
- pigment { ChromeBlue }
- }
-
- bounded_by { box { <-1, -1, -1>, <1, 1, 1> } }
-
- scale <0.8, 1.0, 1.0>
- }
-
- object { /* Chrome edge band #2 */
- X_Tube
- scale <0.05, 1.025, 1.0>
- translate 0.8*x
- texture {
- finish { Chrome }
- pigment { ChromeBlue }
- }
- }
-
- /* Now a bunch of (10) tensioners */
-
- object { Tensioner rotate 000*x }
- object { Tensioner rotate 036*x }
- object { Tensioner rotate 072*x }
- object { Tensioner rotate 108*x }
- object { Tensioner rotate 144*x }
- object { Tensioner rotate 180*x }
- object { Tensioner rotate 216*x }
- object { Tensioner rotate 252*x }
- object { Tensioner rotate 288*x }
- object { Tensioner rotate 324*x }
-
- bounded_by { cylinder { -1.25*x, 1.25*x, 1.25 } }
- }
-
- #declare BassDrum = union {
- object { Drum }
-
- sphere { /* Front Drumhead for Bass */
- <0, 0, 0>, 1
- scale <0.001, 1.0, 1.0>
- translate -0.75*x
-
- finish {
- ambient 0.2
- diffuse 0.7
- specular 0.5
- roughness 0.05
- }
- pigment { White filter 0.25 }
- }
-
- scale <8.0, 10.0, 10.0>
- }
-
- /********************** not used at this time
- #declare SnareDrum = object {
- Drum
- rotate 90.0*z
- scale <5.0, 4.0, 5.0>
- }
- ***********************/
-
- #declare TomTom = object {
- Drum
- rotate 90.0*z
- scale <5.0, 5.0, 5.0>
- }
-
- /* Combine a base and a pair of tomtoms into a half-set */
- /* Object is still centered at 0,0 at this point */
- #declare HalfSet = union {
- object { /* Right bass */
- BassDrum
- rotate -90.0*y /* Turn it on its end */
- }
-
- object {
- TomTom
- rotate +30.0*x /* Lean it towards drummer */
- translate 16.0*y /* Raise it up */
- translate -7.0*x /* Move it left */
- }
-
- object {
- TomTom
- rotate +30.0*x /* Lean it towards drummer */
- translate 16.0*y /* Raise it up */
- translate +7.0*x /* Move it right */
- }
-
- union { /* tomtom bracket */
- object {
- Disk_X /* Horizontal bar */
- translate -0.5*x
- scale <4, 0.25, 0.25> /* Fits between tomtoms */
- translate 16.0*y /* Raise to top of vertical bar*/
- }
-
- sphere { <0, 0, 0>, 1 translate <-4, 16, 0> scale <0.5, 1, 1> }
- sphere { <0, 0, 0>, 1 translate < 4, 16, 0> scale <0.5, 1, 1> }
-
- object { /* Vertical bar */
- Disk_Y
- scale <0.30, 6.0, 0.30>
- translate <0.0, 10.0, 0.0>
- }
-
- sphere { <0, 0, 0>, 1 scale <1.25, 0.5, 1.25> translate 10*y }
- }
-
- finish { Mirror }
- pigment { White }
- }
-